home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
t_os
/
zousan
/
src
/
tifload.c
< prev
next >
Wrap
Text File
|
1994-06-01
|
4KB
|
137 lines
/*
* tifload --- TIFFローダー by N.Takahashi
*
* 'tiff2.c'の使い方を知るためのサンプルプログラム
*
* 使い方: run386 tifload <TIFF_file1> [<TIFF_file2>]
*
* 例1. TIFF画像データを表示する
* run386 tifload sample.tif
*
* 例2. TIFF画像データを圧縮して保存する
* run386 tifload sample.tif compress.tif
* (sample.tifは、圧縮/非圧縮どちらでも可)
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <dos.h>
#include <fcntl.h>
#include <EGB.h>
#include "tiff2.h" /* これをincludeする */
#include "graph.h" /* グラフィック表示のため */
/* Compile 方法 */
/* hcc tifload tiff2 graph -stack 200000 */
/* hccとは、FSW4収録のコンパイラドライバCC(くり氏作)を
HighC1.7対応に変更したものです。 くり様には、
大変感謝しています。
CCは、タイムスタンプ比較機能を持っていますので、
ちょっとしたプログラミングには便利かと思います。
ちなみに、上のように記述しておくと私の環境では、
ctrl+PF9でコンパイルをしてくれます。
*/
PALETTE16 *Pal16;
PALETTE256 *Pal256;
char *Gdata,*Gpal; /* 画像データ&パレット */
int SizX; /* 横サイズ */
int SizY; /* 縦サイズ */
int Gcol=0; /* 色数 */
char *Sv=NULL;
/* パレット調整 */
void adj_palette( char *pal, int col ) {
int i;
if( pal!=NULL ) {
for( i=0; i<col*3; i++ ) {
*((unsigned short *)pal+i)=*((unsigned short *)pal+i)>>8;
}
}
}
void main( int argc, char *argv[] ) {
Tiff *tp;
int i,rt;
if( argc<2 || argc>3 ) {
printf( "usage: run386 tifload.exp <tiff_file> <save_file>\n" );
exit( 1 );
}
if( argc==3 )
Sv=argv[2];
tp=Tiff_new(); /* Tiff_xxx関数の使用準備 */
rt=Tiff_load( argv[1], tp ); /* Tiffデータを読み込む */
if( rt!=0 ) {
printf( "%s : %s\n", argv[1], Tiff_err[rt] ); /* エラーメッセージ */
exit( 1 );
}
Tiff_decompress( tp ); /* Tiff展開 */
Tiff_make_palette( tp ); /* パレットがない場合に作成する */
Tiff_getgraph( &SizX, &SizY, &Gcol, &Gdata, &Gpal, tp );
/* 画像情報を取り出す */
if( Sv==NULL ) {
adj_palette( Gpal, Gcol ); /* Tiffパレットの調整 */
/* Tiff_load直後のパレットデータは、
そのままでは使いにくい */
if( Gcol==16 ) { /* 16色のときの画面設定 */
Pal16=(PALETTE16 *)Gpal;
G_screen( 3, 0 );
G_screen( 3, 1 );
G_active( 1, 2, 1 );
for( i=0; i<16; i++ ) {
G_palette(
i, Pal16->green[i], Pal16->red[i], Pal16->blue[i], 1
);
}
G_enlarge( 1, 1, 0, 0, 640, 480 );
}
else if( Gcol==256 ) { /* 256色のときの画面設定 */
Pal256=(PALETTE256 *)Gpal;
G_screen( 12, 0 );
G_active( 0, 1, 0 );
for( i=0; i<256; i++ ) {
G_palette(
i, Pal256->green[i], Pal256->red[i], Pal256->blue[i], 0
);
}
G_enlarge( 1, 1, 0, 0, 640, 480 );
}
else if( Gcol==32768 ) { /* 32768色のときの画面設定 */
G_screen( 10, 0 );
G_screen( 10, 1 );
G_active( 1, 2, 1 );
G_enlarge( 2, 2, 0, 0, 320, 240 );
}
G_put( 0,0, SizX-1,SizY-1, Gdata ); /* 画像表示 */
_getch(); /* 何かキーを押すまで待つ */
}
if( Sv!=NULL ) {
Tiff_compress( tp ); /* Tiff圧縮 */
rt=Tiff_save( Sv, tp ); /* Tiffデータを書き出す */
if( rt!=0 ) {
printf( "%s : %s\n", Sv, Tiff_err[rt] ); /* エラーメッセージ */
exit( 1 );
}
}
Tiff_delete( tp ); /* Tiff_xxx関数の使用終了 */
G_dosterm(); /* DOS画面に戻す */
}